package com.gitee.cnlongdb.server.transaction.actuator;

import com.gitee.cnlongdb.server.transaction.LongdbTransactionManager;

/**
 * 系统名称：LongdbTransactionActuator
 * 模块名称：
 × 模块描述：longdb - 事务处理执行器
 × 功能列表：
 × 模块作者：ZOUYONG
 × 开发时间：2018年12月7日 下午1:52:42
 × 模块路径：com.gitee.cnlongdb.server.transaction.actuator.LongdbTransactionActuator
 */
public class LongdbTransactionActuator {
	
	/**
	 * 功能描述：管理单个事务
	 × 模块作者：ZOUYONG
	 × 开发时间：2018年12月27日 下午1:37:30
	 × 返回数据：T
	 */
	public static <T> T transactionManager(LongdbSingleTransaction<T> longdbTransaction) {
		T value = null;
		// 开启事务，返回事务名称
		String transactionName = LongdbTransactionManager.startTransaction(true);
		try {
			value = longdbTransaction.openTransaction();
			// 提交事务
			LongdbTransactionManager.commitTransaction(transactionName);
		} catch (Exception e) {
			// 回滚事务
			LongdbTransactionManager.rollbackTransaction(transactionName);
			throw new RuntimeException(e);
		} finally {
			// 清除事务
			LongdbTransactionManager.startTransaction(false);
		}
		return value;
	}
	
	/**
	 * 功能描述：管理多个事务(该功能暂未实现)
	 × 模块作者：ZOUYONG
	 × 开发时间：2018年12月27日 下午1:38:42
	 × 返回数据：T
	 */
	/*public static <T> T transactionMultipleManager(LongdbMultipleTransaction<T> longdbTransaction, LongDbConnect... connects) {
		T value = null;
		// 开启事务，返回事务名称
		String transactionName = LongdbTransactionManager.startTransaction(true);
		try {
			value = longdbTransaction.openTransaction();
			// 提交事务
			LongdbTransactionManager.commitTransaction(transactionName);
		} catch (Exception e) {
			// 回滚事务
			LongdbTransactionManager.rollbackTransaction(transactionName);
			throw new RuntimeException(e);
		} finally {
			// 清除事务
			LongdbTransactionManager.startTransaction(false);
		}
		return value;
	}*/

}
